/*
*二维数组迁移法三
* */
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

class Solution3 {
    public List<List<Integer>> shiftGrid(int[][] grid, int k) {
        int m=grid.length;
        int n=grid[0].length;
        int[][] ret=new int[m][n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                int col=(j+k)%n;
                int tmp=(j+k)/n;
                int row=(i+tmp)%m;
                ret[row][col]=grid[i][j];
            }
        }
        List<List<Integer>> list=new ArrayList<>();
        for(int[] tmp:ret){
            List<Integer> cur=new ArrayList<>();
            for(int val:tmp){
                cur.add(val);
            }
            list.add(cur);
        }
        return list;
    }

    public static void main(String[] args) {
        Stack<Character> stack1=new Stack<>();

    }
}